/* eslint-disable eol-last */
/* eslint-disable no-undef */
/* eslint-disable indent */
'use strict';
/**
 * @description 封装的ajax
 */
((window, $) => {
    // 将来的方法都暴露在window.ajax对象下
    if (window.ajax) {
        console.log('window.ajax已被占用');
        return;
    }
    window.ajax = {};
    // get请求 获取数据
    window.ajax.get = function(url, callback) {
        ajaxFn('get', url, null, callback);
    };
    // post 请求 提交数据
    window.ajax.post = function(url, params, callback) {
        if (typeof params === 'function') {
            callback = params;
            params = {};
        }
        ajaxFn('post', url, params, callback);
    };
    // 上传文件
    window.ajax.upload = function(url, file, callback) {
        // 处理文件
        const formData = new FormData();
        formData.append('file', file);
        $.ajax({
            type: 'post',
            url,
            data: formData,
            contentType: false,
            processData: false,
            success(res) {
                if (res.errno !== 0) {
                    callback(res.message);
                    return;
                }
                callback(null, res.data);
            },
            error(err) {
                callback(null, err.message);
            },
        });
    };
    // 对ajax做统一处理
    function ajaxFn(type, url, params, callback) {
        // callback(err,data)
        $.ajax({
            type,
            url,
            contentType: 'application/json;charset=utf-8',
            data: params ? JSON.stringify(params) : '',
            success(res) {
                // console.log(res);
                if (res.errno !== 0) {
                    // 错误{error:10001,message:"xxx"}
                    callback(res.message);
                    return;
                }
                // 正常数据{error:0,data:{}}
                callback(null, res.data);
            },
            error(err) {
                // 错误
                callback(err.message);
            },
        });
    }
})(window, jQuery);